package model

import (
	"gorm.io/gorm"
	"time"
)

type Exam struct {
	Id          uint           `gorm:"column:id;type:bigint(20) UNSIGNED;primaryKey;not null;" json:"id"`
	ExamTitle   string         `gorm:"column:exam_title;type:varchar(40);comment:题目;not null;" json:"exam_title"`                               // 题目
	ExamType    uint           `gorm:"column:exam_type;type:tinyint(1);comment:1 单选题 2 多选题;not null;" json:"exam_type"`                         // 1 单选题 2 多选题
	Keywords    string         `gorm:"column:keywords;type:varchar(30);comment:关键字;not null;" json:"keywords"`                                  // 关键字
	Difficulty  uint           `gorm:"column:difficulty;type:tinyint(1);comment:难度 1 低 2 中 3 高;not null;" json:"difficulty"`                    // 难度 1 低 2 中 3 高
	MajorOne    string         `gorm:"column:major_one;type:varchar(30);comment:专业一级;not null;" json:"major_one"`                               // 专业一级
	MajorTwo    string         `gorm:"column:major_two;type:varchar(30);comment:专业二级;not null;" json:"major_two"`                               // 专业二级
	Author      string         `gorm:"column:author;type:varchar(25);comment:作者;not null;" json:"author"`                                       // 作者
	Name        string         `gorm:"column:name;type:varchar(25);comment:创建人姓名;not null;" json:"name"`                                        // 创建人姓名
	CTimes      string         `gorm:"column:c_times;type:varchar(120);comment:创建试题时间;not null;" json:"c_times"`                                // 创建试题时间
	Reviewer    string         `gorm:"column:reviewer;type:varchar(100);comment:审核人;not null;" json:"reviewer"`                                 // 审核人
	AuditStatus uint           `gorm:"column:audit_status;type:tinyint(1);comment:审核状态：1未审核 2审核中 3 审核失败  4审核通过 ;not null;" json:"audit_status"` // 审核状态：1未审核 2审核中 3 审核失败  4审核通过
	ScopeUse    uint           `gorm:"column:scope_use;type:tinyint(1);comment:使用范围;not null;" json:"scope_use"`                                // 使用范围
	CreatedAt   time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdateAt    time.Time      `gorm:"column:update_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"update_at"`
	DeleteAt    gorm.DeletedAt `gorm:"column:delete_at;type:datetime(3);default:NULL;" json:"delete_at"`
}

func (e *Exam) TableName() string {
	return "exam"
}
